
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>CheckStyle代码质量守门员 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>CheckStyle代码质量守门员 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">CheckStyle是什么？它主要用于解决什么问题？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">CheckStyle是一款专为Java开发者设计的静态代码分析工具，旨在帮助开发团队强制执行统一的编码标准和约定，从而提高代码的一致性和质量。</div>
          </div>
          <div class="card-source">来源: 文档开篇介绍部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">CheckStyle提供了哪些核心功能来帮助开发者？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">CheckStyle的核心功能包括：自动进行编码规范检查（格式、命名等），提供超过100种可配置规则，内置支持Google、Sun等主流编码风格，生成详细的违规报告，并能无缝集成到Maven、Gradle等CI/CD工具中。</div>
          </div>
          <div class="card-source">来源: 文档中「核心功能概述」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">CheckStyle工具具有哪些使其在同类工具中脱颖而出的优势与特色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">CheckStyle的主要优势与特色有四点：1. 高度定制性，可通过XML文件精细调整规则；2. 成熟稳定，拥有活跃的社区和丰富的文档；3. 扩展性强，支持开发自定义检查模块；4. 良好的IDE集成，为主流IDE提供插件以实现即时反馈。</div>
          </div>
          <div class="card-source">来源: 文档中「优势与特色」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">使用CheckStyle需要付费吗？其主要的使用成本体现在哪里？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">CheckStyle是完全开源免费的，基于GNU Lesser General Public License。其主要成本体现在学习上：初次配置可能较为复杂，以及开发复杂的自定义规则需要投入一定的学习时间。</div>
          </div>
          <div class="card-source">来源: 文档中「使用门槛与成本」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在Maven项目中，如何通过命令行触发CheckStyle的代码检查？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在Maven项目中，首先需要添加 `maven-checkstyle-plugin` 插件，然后可以通过运行命令 `mvn checkstyle:check` 来执行代码检查。</div>
          </div>
          <div class="card-source">来源: 文档中「上手指南」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在团队协作中，如何利用CheckStyle确保所有成员遵循统一的编码规范？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">为了确保团队标准统一，应将自定义的CheckStyle配置文件（.xml）添加到项目的版本控制系统中（如Git），通常放在`config/checkstyle`目录下。这样，所有团队成员都可以导入并使用相同的配置文件进行代码检查。</div>
          </div>
          <div class="card-source">来源: 文档中「自定义和共享配置」部分的「团队共享配置」小节</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在IntelliJ IDEA中配置CheckStyle插件时，有哪几种方式来指定检查规则文件？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在IntelliJ IDEA中配置CheckStyle插件时，有三种指定规则文件的方式：1. `Use a local Checkstyle file`：使用本地的XML配置文件；2. `Use a Checkstyle file accessible via HTTP`：使用一个通过URL访问的网络配置文件；3. `Use bundled Checkstyle rules`：使用插件内置的规则，如Google或Sun标准。</div>
          </div>
          <div class="card-source">来源: 文档中「配置CheckStyle插件」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在IntelliJ IDEA中启用CheckStyle的“实时检查”功能后，它是如何向开发者反馈问题的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">启用实时检查（real-time scan）后，当开发者编辑代码时，违规的代码会被编辑器用波浪线标记出来。将鼠标悬停在波浪线上，即可查看详细的违规信息和建议。</div>
          </div>
          <div class="card-source">来源: 文档中「使用CheckStyle进行代码检查」部分的「实时检查代码」小节</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">如果某段代码确实需要违反CheckStyle的某条规则，应如何处理以避免检查报错？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">有两种主要方法：1. 在CheckStyle的XML配置文件中使用`<module name="SuppressionFilter">`来排除特定的文件或代码模式；2. 在IDE的检查结果中，可以右键点击具体问题并选择`Suppress`，这会在代码中添加注解以忽略对特定代码的检查。</div>
          </div>
          <div class="card-source">来源: 文档中「故障排除和高级使用」部分</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
